<?php

namespace magein\utils;

class Console
{
    // ANSI 颜色代码
    private const COLORS = [
        // 蓝色（进程）
        'blue' => "\033[0;36m",
        // 红色（错误）
        'red' => "\033[0;31m",
        // 绿色（正确）
        'green' => "\033[0;32m",
        // 黄色（警告）
        'yellow' => "\033[0;33m",
        // 重置颜色（白色）
        'white' => "\033[0m",
    ];

    /**
     * 蓝色
     * @param string $message
     */
    public static function blue(string $message): void
    {
        echo self::COLORS['blue'] . $message . self::COLORS['white'] . PHP_EOL;
    }

    /**
     * 红色
     * @param string $message
     */
    public static function red(string $message): void
    {
        echo self::COLORS['red'] . $message . self::COLORS['white'] . PHP_EOL;
    }

    /**
     * 绿色
     * @param string $message
     */
    public static function green(string $message): void
    {
        echo self::COLORS['green'] . $message . self::COLORS['white'] . PHP_EOL;
    }

    /**
     * 绿色
     * @param string $message
     */
    public static function yellow(string $message): void
    {
        echo self::COLORS['yellow'] . $message . self::COLORS['white'] . PHP_EOL;
    }

    /**
     * 绿色
     * @param string $message
     */
    public static function white(string $message): void
    {
        echo self::COLORS['white'] . $message . self::COLORS['white'] . PHP_EOL;
    }

    /**
     * 显示错误消息（红色）
     * @param string $message
     */
    public static function error(string $message): void
    {
        self::red("[error] " . $message);
    }

    /**
     * 显示成功消息（绿色）
     * @param string $message
     */
    public static function success(string $message): void
    {
        self::green("[success] " . $message);
    }

    /**
     * 显示警告消息（黄色）
     * @param string $message
     */
    public static function warning(string $message): void
    {
        self::yellow("[warning] " . $message);
    }

    /**
     * @param int $repeat
     * @return void
     */
    public static function eol(int $repeat = 1)
    {
        echo str_repeat(PHP_EOL, $repeat);
    }
}